#pragma once

#include "Manager.h"

#define CLIENT_WORK_TIME 5.0f
#define CLIENT_SMOKE_TIME 3

enum ClientGroup
{
	ClientGroupWithPaper,
	ClientGroupWithTobacco,
	ClientGroupWithMatch
};

class Client
{
protected:
	HANDLE m_hProcessSemaphore;
	Manager* m_pManager;

	ClientGroup m_eGroup;

	float m_fProcessTime;
	float m_fWaitTime;
	float m_fSmokeTime;
	unsigned long m_ulNumCigarettes;

public:
	Client(Manager *pManager, ClientGroup eGroup);
	~Client();

	void Process();
	inline HANDLE GetProcessSemaphore() { return m_hProcessSemaphore; }
	inline ClientGroup GetGroup() { return m_eGroup; }

	void RunThread();

	static DWORD WINAPI ThreadFunction(LPVOID param);

	void PrintRaport();
};

